package com.atguigu.ioc.factory;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

public class AtguiguBeanPostProcessor implements BeanPostProcessor {

    // 在每一个 bean 对象初始化操作之前执行
    @Override
    public Object postProcessBeforeInitialization(
            // 入参 bean：当前要处理的 bean 对象
            // 入参 beanName：当前 bean 的 id
            Object bean, String beanName) throws BeansException {
        System.out.println("Before bean = " + bean);
        System.out.println("Before beanName = " + beanName);

        // 这里的返回值会被 IOC 容器作为正式使用的 bean 对象，并不要求是参数传入的 bean
        return bean;
    }

    // 在每一个 bean 对象初始化操作之后执行
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("After bean = " + bean);
        System.out.println("After beanName = " + beanName);

        // 这里的返回值会被 IOC 容器作为正式使用的 bean 对象，并不要求是参数传入的 bean
        return bean;
    }
}
